﻿using System;
using Newtonsoft.Json.Linq;
using YookingCrypto.Class;
using YookingFileIO.Class;

namespace YookingBizWQW.Class.Public
{
    public class clsAppUpdate
    {
        //注释：王庆文 2020年03月11日=======================================================================
        //根据手机端传过来的操作平台名称、APP版本日期，得到最新版本的url全地址链接信息
        public string GetNewVersionURL(string strB64RequestData)
        {
            string strRtData = "[{\"PackUrl\":\"yooking null\"}]";

            //先进行解密，然后在进行中文解码，最后得到明文的请求数据
            string strRequestData = clsHandleData.DeUrlRequest(strB64RequestData);

            #region 将strRequestData包含的各种参数一一解析出来

            //得到当前手机端正在使用的APP版本日期
            string strOSPlatform = "IOS";
            string strAppPackName = "JXB";
            string strAppVerDate = "29991231";

            //这些参数用★分隔开，客户端与服务器端要一致
            string[] strArray = strRequestData.Split('★');
            if (strArray.Length >= 3)
            {
                strOSPlatform = strArray[0];  //操作平台
                strAppPackName = strArray[1]; //安装包名称表示字符
                strAppVerDate = strArray[2];  //版本日期
            }

            #endregion

            try
            {
                clsSetting myCfg = new clsSetting(); //读取应用程序的配置文件信息
                JObject myJObject = myCfg.GetSettingObject("", "appsettings.json");

                //读取服务器配置相关节点参数信息,得到最新的APP版本日期,包文件后缀名等
                string strDownloadUrl = myJObject["AppUpdate"]["DownloadUrl"].ToString();
                string strNewVerDate = myJObject["AppUpdate"]["NewVerDate"].ToString();
                string strPackType = myJObject["AppUpdate"]["PackType"][strOSPlatform].ToString();

                //如果手机端的版本日期<服务器上的最新版本日期，则提供最新的程序包名称
                if (strAppVerDate.CompareTo(strNewVerDate) < 0)
                {
                    string strDeDownloadUrl = strDownloadUrl + "/" + strAppPackName + strNewVerDate + "." + strPackType;

                    //为了解决url网址传输过程中特殊字符导致的错误，返回客户端之前先进行加密
                    string strEnDownloadUrl = clsBase64.Base64Encode(strDeDownloadUrl);

                    strRtData = "[{\"PackUrl\":\"" + strEnDownloadUrl + "\"}]"; //得到安装包的下载链接全URL地址
                }
            }
            catch (Exception ex)
            {
                #region 将错误日志记录到指定的txt文件中

                string strLogTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                string strLogFile = "YookingBizWQW.clsAppUpdate_" + DateTime.Now.ToString("yyyyMMdd") + ".txt";

                clsRWFile myLog = new clsRWFile(); //实例化txt文件读写类库
                myLog.WriteInfoToTxtFile("SysLog", strLogFile, strLogTime + " Begin：GetNewVersionURL_Error==========\r\n", true);
                myLog.WriteInfoToTxtFile("SysLog", strLogFile, ex.Message.ToString() + "\r\n", true);
                myLog.WriteInfoToTxtFile("SysLog", strLogFile, strLogTime + " End：GetNewVersionURL_Error============\r\n", true);
                myLog.WriteInfoToTxtFile("SysLog", strLogFile, "\r\n\r\n", true);  //在结尾处写两个回车和空行

                #endregion
            }

            return strRtData; //得到最新版本的url全地址       
        }




    }
}